package com.simple.mq.core.network.core;

import com.simple.mq.core.network.handler.SimpleMqMessageHandler;
import io.netty.channel.ChannelId;
import io.netty.channel.group.ChannelGroup;

import java.util.List;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 项目: simple-mq
 *
 * 功能描述:
 *
 * @author: WuChengXing
 *
 * @create: 2023-09-04 14:24
 **/
public class BasicMaps {

    /**
     * 队列的名称与channelId，方便分发线程进行转发到对应的订阅consumer
     *    写线程有多个，即nio线程组，consumer会动态订阅queue
     *    读线程有多个，为worker线程组，会从中获取订阅信息
     */
    public static ConcurrentHashMap<String, List<ChannelId>> queueConsumerMap = new ConcurrentHashMap<>();

    /**
     * 用于记录和管理所有客户端的channel，可以自动移除已经断开的会话
     * 此处记录一个对象引用副本
     */
    public static ChannelGroup clients = SimpleMqMessageHandler.clients;
}
